Digital cameras are becoming increasingly common in recent years. The number of pixels is also increasing enormously, and typical devices have about 2,000,000 to 5,000,000 pixels. Advanced models with pixels on the order of 10,000,000 are also becoming popular. It can readily be imagined that the resolution should further increase in the future.
The number of users who upload an image sensed by a digital camera to a server which provides an online album service is also rising. In such a system, various kinds of image browsing software are used. Generally, an overview of thumbnail images is displayed first on the client side. The user selects an image to be magnified (enlarged) from the list, and the image is displayed in a size larger than the thumbnail image.
However, if the whole data of a digital camera image containing a large number of pixels is downloaded from the server every time its magnified image is displayed, a long waiting time is necessary until the image is displayed on the client terminal.
Techniques to solve this problem have been developed. In these techniques, image data having a plurality of resolutions and image data obtained by segmenting image data of each resolution into a plurality of tiles and encoding them are saved in a server, and only partial data necessary for display is downloaded and displayed. Since multiple resolutions are prepared, the system can cope with display size change by the client. Since an image is segmented into tiles, the client user can access a partial region of the image at random.
In typical techniques, JPEG 2000 and JPIP are used (Japanese Patent Laid-Open Nos. 2003-23630, which corresponds to US 2003-018818-A1 and 2004-40674). JPEG 2000 is standardized in 2001 as an image encoding method for multiple resolutions and tile segmentation. JPIP indicates JPEG 2000 image coding system—Part 9: interactivity tools, APIs and Protocols (to be referred to as JPIP hereinafter), which has been standardized on November 2004, as a protocol to fragmentarily access and display a file encoded in accordance with JPEG 2000.
Japanese Patent Laid-Open No. 2003-23630 discloses a technique of a server/client system which transmits/receives partial data of JPEG 2000 image data stored in a server. More specifically, a client requests a compressed data portion, which is not stored yet in the buffer, of a server on the basis of information representing which parts of a code stream stored in the server are already stored in the client's buffer. The server extracts the requested partial data of the compressed data and returns the data to the client. Finally, the received data and already stored data are integrated on the client side, thereby obtaining an image.
Japanese Patent Laid-Open No. 2004-40674 discloses a technique to cause the client side to execute quick progressive display of JPEG 2000 encoded data stored on the server side. More specifically, the server extracts, from a file, sub-band encoded data of resolution level designated by the client and transmits the data to the client. The client issues, to the server, a request to designate a desired resolution level and reconstructs image data by combining the decoded sub-band coefficients of the resolution level of the currently displayed image and sub-band coefficients obtained by decoding the encoded data received from the server, thereby implementing progressive display.
To efficiently transmit/receive JPEG 2000 image data between the server and the client by using such a technique, data received by the client must be cached (saved), as in the above-described techniques of Japanese Patent Laid-Open Nos. 2003-23630 and 2004-40674. This is because JPEG 2000 image data of each resolution level is difference data with respect to image data of resolution level lower by one step. When already received fragmented data is cached on the client side, only difference data with respect to the received data needs to be transmitted/received in magnifying the image or increasing the image quality. With this arrangement, the communication data amount can be reduced, and an efficient image communication system can be implemented.
As described above, to obtain a thumbnail image by receiving part of JPEG 2000 image data, the client must designate a resolution level necessary for thumbnail display and request it of the server.
For example, to use the technique described in Japanese Patent Laid-Open No. 2003-23630, the client must know the structure of a code stream stored in the server. First, the client terminal apparatus requests the main header of image data of the server. The client receives the main header and analyzes it. On the basis of the analysis result, the client specifies the JPEG 2000 resolution level necessary for display of a thumbnail image. A request to acquire data of the specified resolution level is issued to the server to acquire the thumbnail image. This sequence is necessary because the number of resolution levels of original image data encoded in accordance with JPEG 2000 or the image size of each resolution level is unknown.
To display a thumbnail image on the client terminal apparatus, at least two communications occur between the server and the client. Since the line speed of a network is high today, in a stateless system, the time required to begin a session between the server and the client makes up a relatively large proportion of data transmission/reception. If two communications are necessary for acquiring a thumbnail image, the thumbnail image is displayed late.
To use the technique described in Japanese Patent Laid-Open No. 2004-40674, request/response must be repeated until the resolution level desired by the client for thumbnail display is obtained. Even in this case, communication must be performed a plurality of number of times.
The same problem also occurs in acquiring a ROI (Region Of Interest). To display a ROI portion on the full screen of a terminal, the header of JPEG 2000 image data is analyzed to specify the size of the ROI. Then, the image size for ROI display is designated. To do this, at least two communications occur between the server and the client.